Micron Document




Comparison of multi-paradigm programming languages
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
top
Programming languages can be grouped by the number and types of paradigms supported.

Contents

Notes

──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Paradigm summaries

A concise reference for the programming paradigms listed in this article.

Concurrent programming – have language constructs for concurrency, these may involve multi-threading, support for distributed computing, message passing, shared resources (including shared memory), or futures

Actor programming – concurrent computation with actors that make local decisions in response to the environment (capable of selfish or competitive behaviour)

Constraint programming – relations between variables are expressed as constraints (or constraint networks), directing allowable solutions (uses constraint satisfaction or simplex algorithm)
Dataflow programming – forced recalculation of formulas when data values change (e.g. spreadsheets)
Declarative programming – describes what computation should perform, without specifying detailed state changes cf. imperative programming (functional and logic programming are major subgroups of declarative programming)
Distributed programming – have support for multiple autonomous computers that communicate via computer networks
Functional programming – uses evaluation of mathematical functions and avoids state and mutable data
Generic programming – uses algorithms written in terms of to-be-specified-later types that are then instantiated as needed for specific types provided as parameters
Imperative programming – explicit statements that change a program state
Logic programming – uses explicit mathematical logic for programming
Metaprogramming – writing programs that write or manipulate other programs (or themselves) as their data, or that do part of the work at compile time that would otherwise be done at runtime

Template metaprogramming – metaprogramming methods in which a compiler uses templates to generate temporary source code, which is merged by the compiler with the rest of the source code and then compiled
Reflective programming – metaprogramming methods in which a program modifies or extends itself

Object-oriented programming – uses data structures consisting of data fields and methods together with their interactions (objects) to design programs

Class-based – object-oriented programming in which inheritance is achieved by defining classes of objects, versus the objects themselves
Prototype-based – object-oriented programming that avoids classes and implements inheritance via cloning of instances

Pipeline programming – a simple syntax change to add syntax to nest function calls to language originally designed with none
Rule-based programming – a network of rules of thumb that comprise a knowledge base and can be used for expert systems and problem deduction & resolution
Visual programming – manipulating program elements graphically rather than by specifying them textually (e.g. Simulink); also termed diagrammatic programmingcite-ref-1[1]

Language overview

| Language | Paradigm count | Concurrent | Constraints | Dataflow | Declarative | Distributed | Functional | Metaprogramming | Generic | Imperative | Logic | Reflection | Object-oriented | Pipelines | Visual | Rule-based | Other |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Ada [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] | 5 | Yes [ a 1 ] | — | — | — | Yes | — | — | Yes | Yes | — | — | Yes [ a 2 ] | — | — | — | — |
| ALF | 2 | — | — | — | — | — | Yes | — | — | — | Yes | — | — | — | — | — | — |
| AmigaE | 2 | — | — | — | — | — | — | — | — | Yes | — | — | Yes [ a 2 ] | — | — | — | — |
| APL | 3 | — | — | — | — | — | Yes | — | — | Yes | — | — | — | — | — | — | Array (multi-dimensional) |
| BETA | 3 | — | — | — | — | — | Yes | — | — | Yes | — | — | Yes [ a 2 ] | — | — | — | — |
| C++ | 7 (15) | Yes [ 7 ] [ 8 ] [ 9 ] | Library [ 10 ] | Library [ 11 ] [ 12 ] | Library [ 13 ] [ 14 ] | Library [ 15 ] [ 16 ] | Yes | Yes [ 17 ] | Yes [ a 3 ] | Yes | Library [ 18 ] [ 19 ] | Library [ 20 ] | Yes [ a 2 ] | Library [ 21 ] | — | Library [ 22 ] | Array (multi-dimensional; using STL ) |
| C# | 6 (7) | Yes | — | Library [ a 4 ] | — | — | Yes [ a 5 ] | — | Yes | Yes | — | Yes | Yes [ a 2 ] | — | — | — | Reactive [ a 6 ] |
| ChucK | 3 | Yes | — | — | — | — | — | — | — | Yes | — | — | Yes [ a 2 ] | — | — | — | — |
| Claire | 2 | — | — | — | — | — | Yes | — | — | — | — | — | Yes [ a 2 ] | — | — | — | — |
| Clojure | 5 | Yes [ 23 ] [ 24 ] | — | — | Yes | — | Yes [ 25 ] | Yes [ 26 ] | — | — | Library [ 27 ] | — | — | Yes [ 28 ] | — | — | Multiple dispatch , [ 29 ] Agents [ 30 ] |
| Common Lisp | 7 (14) | Library [ 31 ] | Library [ 32 ] | Library [ 33 ] | Yes [ 34 ] | Library [ 35 ] | Yes | Yes | Yes [ 36 ] | Yes | Library [ 37 ] | Yes | Yes [ a 7 ] [ a 2 ] [ 38 ] | Library [ 39 ] | Library [ 40 ] | Library [ 41 ] | Multiple dispatch, meta-OOP system, [ 42 ] Language is extensible via metaprogramming. |
| Curl | 5 | — | — | — | — | — | Yes | — | Yes [ a 3 ] | Yes | — | Yes | Yes [ a 2 ] | — | — | — | — |
| Curry | 4 | Yes | Yes | — | — | — | Yes | — | — | — | Yes | — | — | — | — | — | — |
| D (version 2.0) [ 43 ] [ 44 ] | 7 | Yes [ a 8 ] | — | — | — | — | Yes | Yes [ 45 ] [ a 3 ] | Yes [ a 3 ] | Yes | — | Yes | Yes [ a 2 ] | — | — | — | — |
| Delphi | 3 | — | — | — | — | — | — | — | Yes [ a 3 ] | Yes | — | — | Yes [ a 2 ] | — | — | — | — |
| Dylan | 3 | — | — | — | — | — | Yes | — | — | — | — | Yes | Yes [ a 2 ] | — | — | — | — |
| E | 3 | Yes | — | — | — | Yes | — | — | — | — | — | — | Yes [ a 2 ] | — | — | — | — |
| ECMAScript [ 46 ] [ 47 ] ( ActionScript , E4X , JavaScript , JScript ) | 4 (5) | Partial [ a 9 ] [ a 10 ] | — | — | Library [ 48 ] [ 49 ] | — | Yes | — | — | Yes | — | Yes | Yes [ a 11 ] | Library [ 50 ] [ 51 ] | — | — | Reactive, [ a 12 ] [ 52 ] event driven [ a 13 ] [ a 14 ] |
| Erlang | 3 | Yes | — | — | Yes | Yes | Yes | — | — | — | — | — | — | Yes | — | — | — |
| Elixir | 4 | Yes | — | — | — | Yes | Yes | Yes | — | — | — | — | — | Yes | — | — | — |
| Elm | 6 | Yes | — | Yes | Yes | — | Yes ( pure ) [ a 15 ] | — | Yes | — | — | — | — | Yes | — | — | Reactive |
| F# | 7 (8) | Yes [ a 8 ] | — | Library [ a 4 ] | Yes | — | Yes | — | Yes | Yes | — | Yes | Yes [ a 2 ] | — | — | — | Reactive [ a 6 ] |
| Fortran | 4 (5) | Yes | — | — | — | — | Yes [ a 15 ] | — | Yes [ a 16 ] | — | — | — | Yes [ a 2 ] | — | — | — | Array (multi-dimensional) |
| Go | 4 | Yes | — | — | — | — | — | — | — | Yes | — | Yes | — | Yes | — | — | — |
| Haskell | 8 (15) | Yes | Library [ 53 ] | Library [ 54 ] | Yes | Library [ 55 ] | Yes ( lazy ) ( pure ) [ a 15 ] | Yes [ 56 ] | Yes | Yes | Library [ 57 ] | — | Partial [ a 17 ] | Yes | Yes | Library [ 58 ] | Literate, reactive, dependent types (partial) |
| Io | 4 | Yes [ a 8 ] | — | — | — | — | Yes | — | — | Yes | — | — | Yes [ a 11 ] | — | — | — | — |
| J | 3 | — | — | — | — | — | Yes | — | — | Yes | — | — | Yes [ a 2 ] | — | — | — | — |
| Java | 6 | Yes | Library [ 59 ] | Library [ 60 ] | — | — | Yes | — | Yes | Yes | — | Yes | Yes [ a 2 ] | — | — | — | — |
| Julia | 9 (17) | Yes | Library [ 61 ] | Library [ 62 ] [ 63 ] | Library [ 64 ] | Yes | Yes ( eager ) | Yes | Yes | Yes | Library [ 65 ] | Yes | Partial [ a 18 ] | Yes | — | Library [ 66 ] [ 67 ] | Multiple dispatch , Array (multi-dimensional); optionally lazy [ 68 ] and reactive (with libraries) |
| Kotlin | 8 | Yes | — | — | — | — | Yes | Yes | Yes | Yes | — | Yes | Yes | Yes | — | — | — |
| LabVIEW | 4 | Yes | — | Yes | — | — | — | — | — | — | — | — | Yes | — | Yes | — | — |
| Lava | 2 | — | — | — | — | — | — | — | — | — | — | — | Yes [ a 2 ] | — | Yes | — | — |
| LispWorks (version 6.0 with support for symmetric multi-processing, rules, logic ( Prolog ), CORBA ) | 9 | Yes | — | — | — | Yes | Yes | Yes | — | Yes | Yes | Yes | Yes [ a 2 ] | — | — | Yes | — |
| Lua | 3 | — | — | — | — | — | Yes | — | — | Yes | — | — | Yes [ a 11 ] | — | — | — | — |
| MATLAB | 6 (10) | Toolbox [ 69 ] | Toolbox [ 70 ] | Yes [ 71 ] | — | Toolbox [ 72 ] | — | Yes [ 73 ] | Yes [ 74 ] | — | — | Yes [ 75 ] | Yes [ 76 ] | — | Yes [ 77 ] | — | Array (multi-dimensional) |
| Nemerle | 7 | Yes | — | — | — | — | Yes | Yes | Yes | Yes | — | Yes | Yes [ a 2 ] | — | — | — | — |
| Object Pascal | 4 | Yes | — | — | — | — | Yes | — | — | Yes | — | — | Yes [ a 2 ] | — | — | — | — |
| OCaml | 4 | — | — | — | — | — | Yes | — | Yes | Yes | — | — | Yes [ a 2 ] | — | — | — | — |
| Oz | 11 | Yes | Yes | Yes | Yes | Yes | Yes | — | — | Yes | Yes | — | Yes [ a 2 ] | Yes | — | Yes | — |
| Perl | 8 (9) | Yes [ 78 ] | — | Yes [ 79 ] | — | — | Yes | Yes | — | Yes | — | Yes [ a 2 ] | Yes [ a 2 ] | Yes | — | — | — |
| PHP [ 80 ] [ 81 ] [ 82 ] | 4 | — | — | — | — | — | Yes | — | — | Yes | — | Yes | Yes [ a 2 ] | — | — | — | — |
| Poplog | 3 | — | — | — | — | — | Yes | — | — | Yes | Yes | — | — | — | — | — | — |
| Prograph | 3 | — | — | Yes | — | — | — | — | — | — | — | — | Yes [ a 2 ] | — | Yes | — | — |
| Python | 5 (10) | Library [ 83 ] [ 84 ] | Library [ 85 ] | — | — | Library [ 86 ] | Yes | Yes [ 87 ] [ 88 ] | Yes [ 89 ] [ 90 ] | Yes | Library [ 91 ] | Yes | Yes [ a 2 ] | — | — | — | Structured |
| R | 4 (6) | Library [ 92 ] | — | — | — | Library [ 93 ] | Yes | — | — | Yes | — | Yes | Yes | Yes [ 94 ] | — | — | Array (multi-dimensional) |
| Racket | 10 | Yes [ 95 ] | Yes [ 96 ] | Yes [ 97 ] | — | Yes [ 98 ] | Yes | Yes | — | Yes | Yes | Yes | Yes | — | — | — | Lazy [ 99 ] |
| Raku | 10 | Yes [ 100 ] | Library [ 101 ] | Yes [ 102 ] | — | Library [ 103 ] | Yes | Yes [ 104 ] | Yes [ 105 ] | Yes | — | Yes [ 106 ] | Yes [ 107 ] | Yes | — | — | Multiple dispatch, lazy lists, reactive. |
| ROOP | 3 | — | — | — | — | — | — | — | — | Yes | Yes | — | — | — | — | Yes | — |
| Ruby | 5 | — | — | — | — | — | Yes | Yes | — | Yes | — | Yes | Yes [ a 2 ] | — | — | — | — |
| Rust (version 1.0.0-alpha) | 6 | Yes [ a 8 ] | — | — | — | — | Yes | Yes [ 108 ] [ 109 ] | Yes [ 110 ] | Yes | — | — | Yes | — | — | — | Linear, affline, and ownership types |
| Sather | 2 | — | — | — | — | — | Yes | — | — | — | — | — | Yes [ a 2 ] | — | — | — | — |
| Scala [ 111 ] [ 112 ] | 9 | Yes [ a 8 ] | — | Yes [ a 19 ] | Yes | — | Yes | Yes | Yes | Yes | — | Yes | Yes [ a 2 ] | — | — | — | — |
| Simula | 2 | — | — | — | — | — | — | — | — | Yes | — | — | Yes [ a 2 ] | — | — | — | — |
| SISAL | 3 | Yes | — | Yes | — | — | Yes | — | — | — | — | — | — | — | — | — | — |
| Spreadsheets | 2 | — | — | — | — | — | Yes | — | — | — | — | — | — | — | Yes | — | — |
| Swift | 7 | Yes | — | — | — | — | Yes | Yes | Yes | Yes | — | Yes | Yes [ a 2 ] | — | — | — | Block-structured |
| Tcl with Snit extension | 3 | — | — | — | — | — | Yes [ 113 ] | — | — | Yes | — | — | Yes [ a 11 ] [ 114 ] | — | — | — | — |
| Visual Basic .NET | 6 (7) | Yes | — | Library [ a 4 ] | — | — | Yes | — | Yes | Yes | — | Yes | Yes [ a 2 ] | — | — | — | Reactive [ a 6 ] |
| Windows PowerShell | 6 | — | — | — | — | — | Yes | — | Yes | Yes | — | Yes | Yes [ a 2 ] | Yes | — | — | — |
| Wolfram Language & Mathematica | 13 [ 115 ] (14) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes [ 116 ] | — | Yes | Knowledge Based |

See also
Notes

cite-note-rend-mon-71. rendezvous and monitor-like based
cite-note-class-82. class-based
cite-note-temp-meta-203. template metaprogramming
cite-note-tpldf-264. using TPL Dataflow
cite-note-lambda-275. only lambda support (lazy functional programming)
cite-note-rx-286. using Reactive Extensions (Rx)
cite-note-multiple-dispatch2-447. multiple dispatch, method combinations
cite-note-actor-528. actor programming
cite-note-promises-569. promises, native extensions
cite-note-nodejs-cluster-5710. using Node.js' cluster module or child_process.fork method, web workers in the browser, etc.
cite-note-prototype-6011. Prototype-based
cite-note-rxjs-6312. using Reactive Extensions (RxJS)
cite-note-node-events-6513. in Node.js via their events module
cite-note-dom-events-6614. in browsers via their native EventTarget API
cite-note-pure-func-6715. purely functional
cite-note-param-class-6816. parameterized classes
cite-note-immutable-7417. immutable
cite-note-multiple-dispatch1-8318. Uses structs with function polymorphism and multiple dispatch
cite-note-akka-13119. Akka Archived 2013-01-19 at the Wayback Machine

Citations

cite-note-11. citerefbraggdriskill1994Bragg, S.D.; Driskill, C.G. (20–22 September 1994). "Diagrammatic-graphical programming languages and DoD-STD-2167A". Proceedings of AUTOTESTCON '94 (IEEEXplore). Institute of Electrical and Electronics Engineers (IEEE). pp. 211–220. doi:10.1109/AUTEST.1994.381508. ISBN 978-0-7803-1910-3. S2CID 62509261.
cite-note-220. Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3, Section 9: Tasks and Synchronization
cite-note-321. Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3 Annex E: Distributed Systems
cite-note-422. Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3, Section 12: Generic Units
cite-note-523. Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3, Section 6: Subprograms
cite-note-624. Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3, 3.9 Tagged Types and Type Extensions
cite-note-925. Thread support
cite-note-1026. Atomics support
cite-note-1127. Memory model
cite-note-1228. Gecode
cite-note-1329. SystemC
cite-note-1430. Boost.Iostreams
cite-note-1531. Boolinq
cite-note-1632. "AraRat" (PDF). Archived from the original (PDF) on 2019-08-19. Retrieved 2019-09-15.
cite-note-1733. OpenMPI
cite-note-1834. Boost.MPI
cite-note-1935. Boost.MPL
cite-note-2136. LC++
cite-note-2237. Castor Archived 2013-01-25 at the Wayback Machine
cite-note-2338. Reflect Library
cite-note-2439. N3534
cite-note-2540. Boost.Spirit
cite-note-2941. Clojure - Concurrent Programming
cite-note-3042. Clojure - core.async
cite-note-3143. Clojure - Functional Programming
cite-note-3244. Clojure - Macros
cite-note-3345. Clojure - core.logic
cite-note-3446. Clojure - Threading Macros Guide
cite-note-3547. Multimethods and Hierarchies
cite-note-3648. Agents and Asynchronous Actions
cite-note-3749. "concurrency". CLiki.
cite-note-3850. [1] constraint programming inside CL through extensions
cite-note-3951. [2] dataflow extension
cite-note-4052. [3] by creating DSLs using the built-in metaprogramming; also see note on functional, constraint and logic paradigms, which are part of declarative
cite-note-4153. [4] MPI, etc via language extensions
cite-note-4254. template metaprogramming using macros (see C++)
cite-note-4355. [5] [6] [7] Prolog implemented as a language extension
cite-note-4556. Common Lisp Object System see Wikipedia article on CLOS, the Common Lisp Object System.
cite-note-4657. implemented by the user via a short macro, example of implementation
cite-note-4758. - Visual programming tool based on Common Lisp
cite-note-4859. [8] rule-based programming extension
cite-note-4960. [9] Archived 2018-04-26 at the Wayback Machine through the Meta Object Protocol
cite-note-5061. D Language Feature Table
cite-note-5162. Phobos std.algorithm
cite-note-5363. D language String Mixins
cite-note-5464. The Little JavaScripter demonstrates fundamental commonality with Scheme, a functional language.
cite-note-5565. Object-Oriented Programming in JavaScript Archived 2019-02-10 at the Wayback Machine gives an overview of object-oriented programming techniques in JavaScript.
cite-note-5866. "React – A JavaScript library for building user interfaces". 2019-04-08.
cite-note-5967. "TNG-Hooks". GitHub. 2019-04-08.
cite-note-6168. "Lodash documentation". 2019-04-08.
cite-note-6269. "mori". 2019-04-08.
cite-note-6470. "TNG-Hooks". GitHub. 2019-04-08.
cite-note-6971. "Prolog embedding". Haskell.org.
cite-note-7072. "Functional Reactive Programming". HaskellWiki.
cite-note-7173. Cloud Haskell
cite-note-7274. "Template Haskell". HaskellWiki.
cite-note-7375. "Logict: A backtracking logic-programming monad". Haskell.org.
cite-note-7576. citerefkollmansbergererwig2006Kollmansberger, Steve; Erwig, Martin (30 May 2006). "Haskell Rules: Embedding Rule Systems in Haskell" (PDF). Oregon State University.
cite-note-7677. https://jcp.org/en/jsr/detail?id=331 JSR 331: Constraint Programming API
cite-note-7778. https://github.com/GoogleCloudPlatform/DataflowJavaSDK Google Cloud Platform Dataflow SDK
cite-note-7879. "JuliaOpt/JuMP.jl". GitHub. JuliaOpt. 11 February 2020. Retrieved 12 February 2020.
cite-note-7980. "GitHub - MikeInnes/DataFlow.jl". GitHub. 2019-01-15.
cite-note-8081. "GitHub - JuliaGizmos/Reactive.jl: Reactive programming primitives for Julia". GitHub. 2018-12-28.
cite-note-8182. https://github.com/davidanthoff/Query.jl Query almost anything in julia
cite-note-8283. https://github.com/lilinjn/LilKanren.jl A collection of Kanren implementations in Julia
cite-note-8484. "GitHub - abeschneider/PEGParser.jl: PEG Parser for Julia". GitHub. 2018-12-03.
cite-note-8585. "GitHub - gitfoxi/Parsimonious.jl: A PEG parser generator for Julia". GitHub. 2017-08-03.
cite-note-8686. Lazy https://github.com/MikeInnes/Lazy.jl
cite-note-8787. "Execute loop iterations in parallel". mathworks.com. Retrieved 21 October 2016.
cite-note-8888. "Write Constraints". mathworks.com. Retrieved 21 October 2016.
cite-note-8989. "Getting Started with SimEvents". mathworks.com. Retrieved 21 October 2016.
cite-note-9090. "Execute loop iterations in parallel". mathworks.com. Retrieved 21 October 2016.
cite-note-9191. "Execute MATLAB expression in text - MATLAB eval". mathworks.com. Retrieved 21 October 2016.
cite-note-9292. "Determine class of object". mathworks.com. Retrieved 21 October 2016.
cite-note-9393. "Class Metadata". mathworks.com. Retrieved 21 October 2016.
cite-note-9494. "Object-Oriented Programming". mathworks.com. Retrieved 21 October 2016.
cite-note-9595. "Simulink". mathworks.com. Retrieved 21 October 2016.
cite-note-9696. interpreter based threads
cite-note-9797. Higher Order Perl
cite-note-9898. PHP Manual, Chapter 17. Functions
cite-note-9999. PHP Manual, Chapter 19. Classes and Objects (PHP 5)
cite-note-100100. PHP Manual, Anonymous functions
cite-note-101101. "Parallel Processing and Multiprocessing in Python". Python Wiki. Retrieved 21 October 2016.
cite-note-102102. "threading — Higher-level threading interface". docs.python.org. Retrieved 21 October 2016.
cite-note-103103. "python-constraint". pypi.python.org. Retrieved 21 October 2016.
cite-note-104104. "DistributedProgramming". Python Wiki. Retrieved 21 October 2016.
cite-note-105105. "Chapter 9. Metaprogramming". chimera.labs.oreilly.com. Archived from the original on 23 October 2016. Retrieved 22 October 2016.
cite-note-106106. "Metaprogramming". readthedocs.io. Retrieved 22 October 2016.
cite-note-107107. "PEP 443 – Single-dispatch generic functions". python.org. Retrieved 22 October 2016.
cite-note-108108. "PEP 484 – Type Hints". python.org. Retrieved 22 October 2016.
cite-note-109109. "PyDatalog". Retrieved 22 October 2016.
cite-note-110110. "Futureverse".
cite-note-111111. "future batchtools".
cite-note-112112. "Magrittr: A Forward Pipe Operator for R". cran.r-project.org\access-date=13 July 2017. 17 November 2020.
cite-note-113113. Racket Guide: Concurrency and Synchronization
cite-note-114114. The Rosette Guide
cite-note-115115. FrTime: A Language for Reactive Programs
cite-note-116116. Racket Guide: Distributed Places
cite-note-117117. Lazy Racket
cite-note-118118. Channels and other mechanisms
cite-note-119119. "Problem Solver module".
cite-note-120120. Feed operator
cite-note-121121. https://github.com/perl6/doc/issues/1744#issuecomment-360565196 Cro module
cite-note-122122. "Meta-programming: What, why and how". 2011-12-14.
cite-note-123123. https://perl6advent.wordpress.com/2009/12/18/day-18-roles/ Parametrized Roles
cite-note-124124. "Meta-object protocol (MOP)".
cite-note-125125. https://docs.perl6.org/language/classtut Classes and Roles
cite-note-126126. rust-macros"The Rust macros guide". Rust. Retrieved 19 January 2015.
cite-note-127127. rust-plugins"The Rust compiler plugins guide". Rust. Retrieved 19 January 2015.
cite-note-128128. The Rust Reference §6.1.3.1
cite-note-129129. An Overview of the Scala Programming Language
cite-note-130130. Scala Language Specification
cite-note-132131. "Tcl Programming/Introduction". en.wikibooks.org. Retrieved 22 October 2016.
cite-note-133132. "TCLLIB - Tcl Standard Library: snitfaq". sourceforge.net. Retrieved 22 October 2016.
cite-note-134133. Notes for Programming Language Experts, Wolfram Language Documentation.
cite-note-135134. External Programs, Wolfram Language Documentation.

References

• Jim Coplien, Multiparadigm Design for C++, Addison-Wesley Professional, 1998.